iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0

首先,在 FP languages 裡面(Swift 可以有多種寫法,可以是物件導向也可以是函式編程,完全取決於你的寫法),function 是 first-class citizens。

而要成為 first-class citizens 有幾樣比較重要的條件需要滿足:

1. Function 可以像其他物件一樣,你可以指派函式給變數。
2. Function 也可以接受其他 Function 當作參數去傳遞,或者回傳 Function
3. 而 Function 可以滿足第 2 點的 Function 我們又稱為 higher-order functions

所以我們今天的主題在於先介紹常用的 higher-order functions 人組:

map 先生
filter 小姐
reduce 小孩

(以上的稱謂沒有特別的意涵)

胡適曾經說過(?)女士優先,所以我們就先從 Filter 小姐開始介紹~

在 Swift 中 filter(:) 用來處理 Collection 的型別,例如說 Array
filter 會將 Array 中的每個元素都調用出來,並將函數打進去(簡稱:拉出來,打進去),在作用後產生另一組 Array

舉例來說:
有個 fish 的 array

let tunaFamily = fish.filter { $0 == "tuna"}

在經過 filter 的作用後他會產生只有炙燒鮪魚一家的的 Array 看到這邊是不是餓了啊?

FP 有個我覺得蠻重點的點在於: 你今天想要怎麼做?

你今天除了可以叫鮪魚一家粗來丸外,如果你想要把其中的小鮮肉鮪魚叫出來帶回家,你可以怎麼做?

tunaFamily.filter {$ 0 .age < 20 }

FP 可以讓你不僅僅是去去定義一堆 funtion 和 properties 然後再去把他們組裝起來,而是可以在當下就聚焦於 " 你要怎麼處理這些funtion 和 properties " ,看要是清蒸還是紅燒,我們可以再拿到食材後馬上處理,這可以讓程式碼清晰許多。


上一篇
Swift Functional Programming (一)
下一篇
Swift Functional Programming (三)
系列文
iOS 開發:燃燒吧! 從初心者到超級初心者的轉職之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言